/**
 * 导出数据到CSV文件
 * @param {Array} data - 要导出的数据数组
 * @param {String} filename - 文件名，默认为export.csv
 */
export function exportToCsv(data, filename = 'export.csv') {
  if (!data || !data.length) {
    console.error('No data to export');
    return;
  }

  // 获取表头
  const headers = Object.keys(data[0]);
  
  // 生成CSV内容
  const csvContent = [
    // 表头行
    headers.join(','),
    // 数据行
    ...data.map(row => 
      headers.map(field => {
        // 处理值，如果包含逗号、双引号或换行符，需要用双引号包裹
        const value = row[field] != null ? row[field].toString() : '';
        if (value.includes(',') || value.includes('"') || value.includes('\n')) {
          return `"${value.replace(/"/g, '""')}"`;
        }
        return value;
      }).join(',')
    )
  ].join('\n');
  
  // 创建Blob
  const blob = new Blob([csvContent], { type: 'text/csv;charset=utf-8;' });
  
  // 创建下载链接
  const link = document.createElement('a');
  
  // 支持FileSaver API的浏览器
  if (navigator.msSaveBlob) {
    navigator.msSaveBlob(blob, filename);
    return;
  }
  
  // 其他现代浏览器
  const url = URL.createObjectURL(blob);
  link.href = url;
  link.download = filename;
  link.style.visibility = 'hidden';
  document.body.appendChild(link);
  link.click();
  document.body.removeChild(link);
  URL.revokeObjectURL(url);
}

/**
 * 导出数据到Excel文件
 * 注意：此函数需要依赖xlsx库
 * @param {Array} data - 要导出的数据数组
 * @param {String} filename - 文件名，默认为export.xlsx
 * @param {String} sheetName - 工作表名称，默认为Sheet1
 */
export async function exportToExcel(data, filename = 'export.xlsx', sheetName = 'Sheet1') {
  if (!data || !data.length) {
    console.error('No data to export');
    return;
  }
  
  try {
    // 动态导入xlsx库
    const XLSX = await import('xlsx');
    
    // 创建工作簿和工作表
    const worksheet = XLSX.utils.json_to_sheet(data);
    const workbook = XLSX.utils.book_new();
    XLSX.utils.book_append_sheet(workbook, worksheet, sheetName);
    
    // 导出文件
    XLSX.writeFile(workbook, filename);
  } catch (error) {
    console.error('Failed to export Excel file:', error);
    // 回退到CSV导出
    alert('Excel导出失败，将使用CSV格式导出');
    exportToCsv(data, filename.replace('.xlsx', '.csv'));
  }
}

/**
 * 打印内容
 * @param {String} content - 要打印的HTML内容
 * @param {String} title - 打印页面标题
 */
export function printContent(content, title = 'Print') {
  // 创建打印窗口
  const printWindow = window.open('', '_blank', 'height=600,width=800');
  
  // 写入内容
  printWindow.document.write(`
    <!DOCTYPE html>
    <html>
    <head>
      <title>${title}</title>
      <style>
        body {
          font-family: Arial, sans-serif;
          margin: 20px;
        }
        table {
          border-collapse: collapse;
          width: 100%;
        }
        th, td {
          border: 1px solid #ddd;
          padding: 8px;
          text-align: left;
        }
        th {
          background-color: #f2f2f2;
        }
        .print-header {
          text-align: center;
          margin-bottom: 20px;
        }
        .print-footer {
          text-align: center;
          margin-top: 20px;
          font-size: 12px;
          color: #666;
        }
        @media print {
          .no-print {
            display: none;
          }
          body {
            margin: 0;
            padding: 15mm;
          }
        }
      </style>
    </head>
    <body>
      <div class="no-print" style="margin-bottom: 20px;">
        <button onclick="window.print()">打印</button>
        <button onclick="window.close()">关闭</button>
      </div>
      ${content}
      <div class="print-footer">
        打印时间: ${new Date().toLocaleString()}
      </div>
    </body>
    </html>
  `);
  
  // 关闭文档
  printWindow.document.close();
  
  // 聚焦窗口
  printWindow.focus();
}

export default {
  exportToCsv,
  exportToExcel,
  printContent
}; 